文章目录
  1. 1. 因此,我们用void 0 代替undefined便成了通用准则。
  • 总结
  • 因为undefined在javascript中不是保留字。也就是说你可以给undefined赋值:

    题外话什么是保留字,就是js中关键字的替补队员,意思是现在虽然现在还不是关键字(也就是本身还不具备特殊含义的),但是未来可能会成为关键字的,你一样是不能使用它们当变量名啊方法名的。包括(按字母排序)

    undefined 在 ES5 中已经是全局对象的一个只读(read-only)属性了,它不能被重写。但是在局部作用域中,还是可以被重写的。

    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    var undefined = '詹姆斯牛逼';
    alert(undefined);//undefined

    function test()
    {
    var undefined = '詹姆斯牛逼';
    alert(undefined);
    }

    test();//'詹姆斯牛逼'

    因此,我们用void 0 代替undefined便成了通用准则。

    void 运算符能对给定的表达式进行求值,然后返回 undefined。也就是说,void 后面你随便跟上一个表达式,返回的都是 undefined,都能完美代替 undefined!那么,这其中最短的是什么呢?毫无疑问就是 void 0 了。其实用 void 1,void (1+1),void (0) 或者 void “hello”,void (new Date()) 等等,都是一样的效果。更重要的前提是,void 是不能被重写的(cannot be overidden)

    那么,ES5 大环境下,void 0 就没有用武之地了吗?答案是否定的.
    用 void 0 代替 undefined 能节省不少字节的大小,事实上,不少 JavaScript 压缩工具在压缩过程中,正是将 undefined 用 void 0 代替掉了.

    还有一个常见的功能,填充href。

    1
    <a href = "javascript:void(0);"/>

    但如果不写的话,点击它会刷新整个页面。于是便用上了href=”javascript:void(0)的方式,确保点击它会执行一个纯粹无聊的void(0)

    另一种情况是,如果我们要生成一个空的src的image,最好的方式似乎也是src=’javascript:void(0)’

    总结

    void有如下作用:

    1.通过采用void 0取undefined比采用字面上的undefined更靠谱更安全,应该优先采用void 0这种方式。

    2.填充的href确保点击时不会产生页面跳转; 填充的src,确保不会向服务器发出垃圾请求。

    文章目录
    1. 1. 因此,我们用void 0 代替undefined便成了通用准则。
  • 总结